The goal of segment routing is to make simplified flexible connection routing in IP/MPLS networks by building largely on features of existing network protocols. The main idea in segment routing is to use a sequence of segments to compose the desired end-to-end connection path.
The path between the end points of each segment is determined by a conventional routing protocol like Open Shortest Path First (“OSPF”).
The segment labels are carried in the packet header and so a per-flow state is maintained only at the ingress node. A segment label is like a Multiprotocol Label Switching (“MPLS”) label and traditional push, pop, swap actions can be applied to it by the routers on the segment path.
Segment routing permits finer control of the routing paths and so segment routing can be used to distribute traffic for improved network utilization.
A central controller can utilize the full potential of segment routing by choosing segments based on the traffic pattern to judiciously distribute traffic in the network and avoid local hot-spots.
FIG. 1 illustrates a network with bi-directional links. The number next to each link is the Interior Gateway Protocol (“IGP”) link weight. For example, to illustrate segment routing, a connection that has to be established between nodes A and Z, using OSPF has packets which belong to the flow A-N-Q-P-Z will be routed on the shortest path.
For example, assume that link N-Q and C-D are congested (i.e. hot-spots) and we want to route the packet on the path A-B-C-Q-P-Z, this is done by breaking the path into two segments A-B-C and C-Q-P-Z.
In addition to the destination address Z, the segment labels C and Q are added to the header. The packet is routed from A to C along the shortest path A-B-C and at node C, the top label is popped and the packet is routed to Q. At node Q, the second label is popped and the packet is routed to Z along the shortest path.
There is no per-flow state at any of the intermediate nodes in the network. If there are no segment identifiers, then packets are routed along shortest paths as in standard IGP routing protocols.
The other extreme is when each hop is specified in the packet header which is a form of explicit path routing. This fine grained control of the routing path enables the deployment of network functions like service chaining where the packet has to pass through a set of middle boxes when it goes from the source to destination.
Segment routing can also be used for steering traffic to avoid hot-spots in the network and thereby improve network utilization.
There are two basic types of segments: node and adjacency. A node segment identifies a router node. Node segment identifiers are globally unique across the domain. An adjacency segment represents a local interface of a node. Adjacency segment identifiers are typically only locally significant on each node.
The MPLS data plane can be leveraged to implement segment routing essentially without modification since the same label switching mechanism can be used. Segment labels are distributed across the network using simple extensions to current IGP protocols and hence Label Distribution Protocol (“LDP”) and Resource Reservation Protocol-Traffic Engineering (“RSVP-TE”) are no longer required for distributing labels.
Therefore, the control plane can be significantly simplified. Moreover, unlike MPLS, there is no need to maintain a path state in segment routing except on the ingress node, because packets are now routed based on the list of segments they carry in the header of the packet.
The ingress node has to be modified since it needs to determine the path and add the segment labels to the packet. For traffic planning problems where the objective is to route traffic so that no link is overloaded, it is generally enough to consider segment routes with just two segments.
For example, a two-segment route is shown in FIG. 2. In the case of two-segment routing, traffic is routed though one intermediate node. In FIG. 2, the path A-B-C-D-Z is represented as two segments, one from A to C and the other from C to Z.